#include <iostream>
#include <string>
#include <filesystem>
#include <fstream>

#define GPIO_Path "/sys/class/gpio"
#define GPIO_Export "/sys/class/gpio/export"
#define GPIO_Unexport "/sys/class/gpio/unexport"

class gpio_control
{
private:
    /* data */
    int gpio_control_pin;//引脚号
    int gpio_value_fd;
public:
    gpio_control(int pin);
    ~gpio_control();

    // 初始化GPIO
    void gpio_init(int pin);

    // 判断IO操作文件是否存在
    int gpio_file_exist(int pin);

    // 查询边缘触发状态
    std::string get_gpio_edge();

    // 设置边缘触发状态
    int gpio_edge(std::string edge_mode);

    //检测边缘触发信号
    int gpio_edge_event(unsigned int is_block_time);//阻塞检测是否出现跳变

    // 设置GPIO方向
    int gpio_direction(std::string dir);

    // 获取当前IO方向
    std::string get_gpio_direction(); 

    // 获取当前电平值
    int get_gpio_outvalue();

    // 设置GPIO的输出电平
    int gpio_outvalue(int val);


};







